Jak synchronizovat thread a ttimer ?
Otázka od: Jan Pukovec
27. 10. 2003 2:06
V programu pouzivam nekolik threadu, pricemz kazdy thread ma prirazeny
informace v radku DataSetu.
Tzn. napr.
Thread 1 - Radek 1
Thread 2 - Radek 2 atd.
Potrebuju-li zmenit informace o threadu, najdu si v DataSetu dany radek
dle GUIDu threadu (DataSet.Locate) a pote pomoci Edit a Post zmenim
data. Tohle ale narazi na problem se synchronizaci, nekdy se stava, ze
Locate sice najde zaznam, ale v tu samou chvili druhy thread rovnez
zavola Locate a Thread c. 1 pak zmeni nevlastni radek.
Resil jsem to pomoci TCriticalSecitons a zda se ze to funguje, ale pak
nastava problem s TTimerem.
V hlavnim threadu je spusteny TTimer ktery v urcitem intervalu projde
cely dataset (radek po radku) a s daty neco provede. V nem taky pouzivam
TCriticalSection - Enter a Leave (nebo Acquire a Release), ale kdyz jsem
si nechal vypsat do stringlistu pristupy z ruznych mist, ukazalo se tam
Entered critical seciton by Thread (GUID ...)
Entred critical section by Timer
Leaved critical section by Thread
... tzn. ze TTimer si klidne vlezl do programoveho kodu ktery je omezeny
TCriticalSeciton, zatimco v teto uz byl 1thread.
Chapu spravne ze do kodu mezi TCriticalSeciton.Enter a Leave by se mel
dostat vzdy jen 1 thread ?
Nevite nekdo jak tenhle problem vyresit ?
Dik
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)